package com.reflect.test;

import com.reflect.entity.Student;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;

/**
 * @author wzm
 * @create 2023-04-06 10:31
 */

//反射获取成员变量（属性）
public class RefTest04 {
    public static void main(String[] args) throws Exception {
     //获取类的字节码文件
       Class clazz = Class.forName("com.reflect.entity.Student");
       
       //1.获取所有公开的成员变量对象数组
        Field[] fields = clazz.getFields();
        for(Field field : fields){
            System.out.println("field = " + field);
        }

        System.out.println("---------------------------------------");
        //2.获取所有的成员变量 public+private
        Field[] declaredFields = clazz.getDeclaredFields();
        for(Field field : declaredFields){
            System.out.println("field = " + field);
        }
        System.out.println("---------------------------------------");
        //3.获得单个public成员变量 名字
        Field id = clazz.getField("id");//获取公开的id属性
        //Field aaa = clazz.getField("aaa");//如果属性不能存在 会报异常

        System.out.println("id = " + id);
        System.out.println("---------------------------------------");
        //4.获得单个private+public的成员变量
        Field name = clazz.getDeclaredField("name");
        System.out.println("name = " + name);



        //获取属性为了赋值或获取值

    }

}
